import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 
     * @param x string字符串 只包含小写英文字符的字符串
     * @return bool布尔型
     */
    public static boolean F (String x) {
        // write code here
        HashMap<Character, Integer> map = new HashMap<>();
        char[] ch = x.toCharArray();
        for(int i = 0;i<ch.length;i++){
            if(map.get(ch[i]) != null){
                map.put(ch[i], map.get(ch[i]) + 1);
            } else {
                map.put(ch[i],1);
            }
        }
        int flg = 0;//字母的出现次数
        int n = 0;//数组长度
        for(char tmp = 'a'; tmp <='z'; tmp ++){
            if(map.get(tmp) == null || map.get(tmp) == 0){
                continue;
            } 
            n++;
        }
        int[] arr = new int[n];
        int i = 0;
        for(char tmp = 'a'; tmp <='z'; tmp ++){
            if(map.get(tmp) == null || map.get(tmp) == 0){
                continue;
            } 
            arr[i] = map.get(tmp);
            i++;
        }
        Arrays.sort(arr);
        for(int k = 0; k<arr.length-2;k++){
            if(arr[k] != arr[k+1]){
                return false;
            }
        }
        if(arr.length <= 2){
            return true;
        }
        if(arr[arr.length-1] -1 != arr[arr.length-2]){
            return false;
        } else {
            return true;
        }
    }

    public static void main(String[] args) {
        System.out.println(F("aaaaa"));
        System.out.println('a' ^ 'a' ^ 'b' ^ 'c');
    }
}